![]() |
STM32 电机控制 SDK MCFW-6.4.1
基于 STM32 微控制器驱动 PMSM 电机的软件开发工具包 - 中文版
|
⬅️ 上一页:开始使用 Motor Control SDK | 📋 目录 | 下一页:电机控制固件架构 ➡️
Motor Profiler更新始于MCSDK版本6.2.0及以上
为了方便用户对电机进行分析,本版本的 MCSDK 提供了一种更新且高效的方式来生成 Motor Profiler 软件二进制文件,以满足这一需求。
新的 MCSDK WB 工具能够基于描述的电路板和 FOC 电机控制软件生成 Motor Profiler 项目。因此,无需再存储和更新所有依赖硬件板设置和不同 MCU 拓扑的 Motor Profiler 二进制文件。
Motor Profiler 算法作为库提供于 MCSDK FW 中,可链接并兼容 ARMv7 和 ARMv8 架构。该算法仅在嵌入浮点单元(FPU)的 ARM 架构上运行。因此,无法为 STM32F0、STM32G0、STM32C0 系列生成 Motor Profiler 二进制文件。
任何类型的 IDE 或 ARM 编译器都可以生成 Motor Profiler 二进制文件。根据不同的 IDE(ARM 编译器类型,如 armcc、gcc 等),Motor Profiler 算法将嵌入三种不同的库中。下表描述了这些不同版本的库。
表1:库名称与 IDE 编译器版本及 ARM 架构
| IDE 编译器 | Arm V7 Motor Profiler 库 | G4xx Arm V7 Motor Profiler 库 | ARM V8 Motor Profiler 库 |
|---|---|---|---|
| IAR, STM32CubeIDE | libmp-IAR_ARMv7-M.a | libmp-G4-IAR_ARMv7-M.a | libmp-IAR_ARMv8-M.a |
| Keil | libmp-MDK-ARM_ARMv7-M.a | libmp-G4-MDK-ARM-ARMv7-M.a | libmp-MDK-ARM_ARMv8-M.a |
MCSDK WB 工具包含.json板描述文件。对于某些电源和逆变板,会嵌入resistorOffset 参数,用于确定电机的电阻参数 Rs,即电机的电气参数之一。一旦描述并用于电机分析,该参数必须包含在其对应的.json文件中。如果生成的Motor Profiler固件未在所选电源或逆变板中描述的resistorOffset参数,则生成的Motor Profiler固件中会找到该参数的默认值-32768。因此,Motor Profiler 工具将不允许进行电机分析。随后,Motor Profiler工具提供了计算该缺失resistorOffset 参数的能力。
Motor Profiler 工具是 Motor Pilot 工具的一个子集,界面相同。这一经过验证且高效的工具允许连接控制板或逆变板,并通过计算电机的电气和机械参数来执行电机的分析。
一些电机控制算法使用霍尔传感器检测电机的位置和速度。使用霍尔传感器,转子的位置通过读取霍尔传感器(即连接到三个定时器通道输入)的数字信号来实现。得益于将Motor Profiler 工具和Motor Profiler 固件加载到控制板或逆变板中,任何霍尔传感器都可以被分析,生成两个对霍尔处理有用的特定参数。
描述的板式配置意味着电源板或逆变板作为.json文件嵌入 MCSDK WB 数据库(MC_SDK_6.x.y\Utilities\PC_Software\STMCWB\assets\hardware\board),并且 resistorOffset 参数嵌入在这个板描述文件中。与所有 FOC 项目一样,MCSDK WB 版本允许用户通过以下步骤生成 Motor Profiler 项目:
创建一个新的电机控制FOC算法配置项目,包含高压电机或低电压电机(如果未知),描述电源和控制板,或逆变器板。下表列出了该MCSDK WB版本支持的电源和逆变板列表,用于生成Motor Profiler 项目。
表2:包含resistorOffset 参数的描述板卡列表
| 逆变器 | 电源板 | 电源板 | 电源板 | 电源板 | 逆变器 | 电源板 | 电源板 | 电源板 | 电源板 | 电源板 | 电源板 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| EVSPIN32G4 | X-NUCLEO-IHM07M1 | X-NUCLEO-IHM16M1 | X-NUCLEO-IHM17M1 | X-NUCLEO-IHM08M1 | B-G431B-ESC1 | STEVAL-IHM023V3 | STEVAL-IPM05F | STEVAL-IPM10B | STEVAL-IPM15B | STEVAL-IPMN3GQ | STEVAL-IPMNM1N |
随着STMicroelectronics设计出支持电机控制算法改进的新高效电路板和每届MCSDK新版本中的STM32集成电路,该列表可能会更新。
项目创建后,首先检查“电流感应”配置,并专门设置“三分流电阻”用于“电流检测拓扑”。Motor Profiler 固件生成不支持单分流电阻电流检测拓扑。根据电机的电感分量,相位电流可能存在较高的纹波。然后可以提高PWM频率,以便更好地控制电机进行分析。
图1:MCSDK WB 电流检测拓扑
现在,可以选择ADC数量进入“ADC”系列。通常选择“3分流/2个ADC电流检测”拓扑,通过在短时间内用两个不同的ADC同时采样两个电流,实现PWM更高的调制指数。
图2:MCSDK WB ADC拓扑
要以电机分析方式配置该创建的FOC项目,请在“应用配置”阶段勾选“Motor Profiler”功能。
图3:MCSDK WB发动机剖面仪项目旗帜
现在是时候保存并Generate MCSDK WB 提出的 IDE 工具链(即 Stm32CubeIDE)中的Motor Profiler 项目。
图4:MCSDK WB项目保存与Generate
一旦生成了 Motor Profiler 项目,必须通过所选的 IDE 或任何 ARM 编译脚本对该项目进行编译。
图5:MCSDK WB项目Generate
生成的二进制现在可以使用所选的IDE工具或使用STM32CubeProgrammer工具加载到控制板或逆变板的闪存中。
当Motor Profiler 固件运行到MCU时,可以通过启动从6.2.0(V1.2.0)开始的Motor Pilot工具来使用Motor Profiler 工具。
第一个操作是选择“Launch Profiler”按钮以打开Motor Profiler图形界面。注意,如果Motor Pilot已经打开,即带有FOC GUI,可以通过执行“GUI/load GUI”动作来加载profiler.qml。
图6:Motor Pilot启动窗口
就像Motor Pilot一样,检查电路板连接部分,然后把Motor Profiler 工具连接到控制板或逆变板上。用户现在可以使用Motor Profiler图形界面。
图7:Motor Profiler 工具连接接口部分
一旦电路板连接,所有信息都会显示出来,Motor Profiler 工具现在能够与嵌入式固件通信以分析电机。
图8:Motor Profiler 工具启动分析窗口
请配置电机所需的已知信息:极对数、最大转速和最大电流信息,以及电压阈值。此外,还可以选择内置式永磁同步电机(IPMSM)及其Ld/Lq比,或表贴式永磁同步电机(SM-PMSM)。
图9:Motor Profiler 工具电机输入参数
最后,是时候按下“Start Profile”按钮了。电机分析序列开始,并在轮廓执行过程中依次计算电气和机械模型参数,该轮廓由条增的推进表示。一旦分析完成,所有这些参数都会被更新并显示。最后,建议将所有这些电机参数保存到.json文件中。
图10:Motor Profiler电气和机械模型参数
resistorOffset 参数,也称为校准因子,物理上是估计电阻(以欧姆为单位)中的一个偏移量。在测量电机电阻时,模型中存在许多非理想因素,例如:
• 导电电源开关的Vds On(电压开关)
• 自由二极管中的电压降
• 应用死时间
这些因素在施加给电机的估计电压中产生误差,以确定电机的电阻为Rs。resistorOffset 参数允许补偿所有这些因素(尤其是低电阻值测量)。校准因子技术通过对已知电阻值的电机执行Motor Profiler估计(仅测量电阻),并通过差分计算校准因子。
如果电源或逆变器板的电阻偏移量未知,Motor Profiler 固件可以提供计算该参数的能力。这种模式称为电源板特性分析。一旦生成电机分析器FW二进制,resistorOffset 参数将等于-32768。加载Motor Profiler 固件后,工具现在能够计算该参数。为了表征电源板或逆变板,用户必须将另一个电机连接到其板上,该电机已知一些参数,如:极对数、最大转速、最大电流,特别是电阻的Rs参数。
在Motor Profiler 工具中,更新上述电机信息后,请点击“Offset Detection”按钮开始“电阻偏移”计算。
图11:仅具备“Offset Detection”功能的Motor Profiler 工具
一旦按下Offset Detection按钮,Motor Profiler的电源特性模式即开始。当进度条达到100%时,用户可以输入用于表征的电机已知电机电阻 Rs参数(即0.58)。得到的电阻偏移值现在可用(即1.545)。
图12:Motor Profiler 工具中“电阻偏移”的计算示例
注意,在对电阻偏移量进行特性分析后执行Start Profile后,Motor Profiler工具会将resistorOffset 参数更新到Motor Profiler固件中。通过拆除已知电机并将新电机放入剖面,工具现在可以在更新已知特性(极对数、最大转速、最大电流等)后对电机进行剖析。电机分析完成后,Motor Profiler 工具将不再允许执行“Offset Detection”。只有新一代Motor Profiler项目,在MCSDK WB中将电源或逆变板的.json文件中缺少电阻偏移,或手动将参数 #define RESISTOR_OFFSET -32768更改到生成的Motor Profiler项目的inc/parameters_conversion.h文件中,才能通过Motor Profiler工具进行新的“Offset Detection”。
图13:Offset Detection及新Start Profile操作后的Motor Profiler工具
resistorOffset 参数计算过程的最后一个动操作是更新所用电源或逆变板的.json文件。事实上,resistorOffset参数必须添加到.json文件开头的motorDrives区域,位于connectorType参数下方,示例如下:
图14:.json示例文件,包含resistorOffset参数
要对霍尔传感器进行分析,用户首先需要将MCSDK WB的Motor Profiler 项目配置,并将速度辅助传感器模式设置为霍尔传感器。
图15:MCSDK WB霍尔传感器作为“辅助传感器”的选择
随后,可以Generate、编译并下载到Flash中,如上一章所述。一旦Motor Profiler 工具连接到控制板或逆变板,即可通过按下霍尔传感器分析器按钮进入霍尔传感器剖析窗口。请注意,只有在之前已完成发动机轮廓后,启动大厅的画像才会开放。如果不是这样,请先启动电机分析,然后再对霍尔传感器进行分析。
图16:Motor Profiler 工具“开始霍尔传感器分析”访问
按下霍尔传感器分析器按钮后,霍尔传感器分析窗口会显示两个霍尔感应参数:位置电角度和传感器位移,这些参数将在霍尔传感器的剖析过程中计算出来。
图17:Motor Profiler 工具 Hall 剖面仪窗口
请点击“开始Hall Profiling”以开始流程。Motor Profiler 工具会在流程开始时要求用户检查霍尔传感器剖面所需的连接和电源。
图18:Motor Profiler 工具霍尔传感器连接与电源检查窗口
Motor Profiler 工具还会要求用户确认电机是否朝正方向旋转。如果不是这样,请重新检查你的霍尔传感器连接和电源,并重新执行霍尔传感器分析。
图19:Motor Profiler 工具霍尔传感器正向方向检查窗口
霍尔传感器的分析将双向进行。两个旋转方向过程完成后,两个计算出的参数值会被显示出来。
图20:Motor Profiler 工具霍尔传感器计算参数值
所有由电机和霍尔传感器分析器生成的参数都可以存储到MCSDK的WB电机、json数据库中,即C:\Users\user_name\.st_workbench\hardware\motor。
图21:motor1.json文件示例
如果Motor Profiler固件不支持电流感知阶段ADC数量的ADC配置,编译可能会失败。固件会尝试连接未嵌入Motor Profiler 固件库中的特定PWM电流反馈函数。
下表展示了Motor Profiler 支持的ADC实例选择配置示例。
表3:支持的ADC拓扑与STM32 IC的对比示例
| ADC配置兼容性 | ADC1 | ADC1 / ADC2 |
|---|---|---|
| NUCLEO-F746ZG | 否 | 是 |
| NUCLEO-H563ZI | 是 | 是 |
| NUCLEO-G431RB | 是 | 是 |
如果resistorOffset 参数不存在于.json文件中,固件会考虑该参数的默认值(-32768),导致在分析过程中电机开始转动时发出不良声音。
这可能与编译错误类似,当生成Motor Profiler项目时,仅有一个1模数驱动器配置用于电流感测。建议在任何Motor Profiler 项目中只设置两个ADC配置。
固件未能找到合适的启动速度坡度解决方案。首先,最大电流和最大速度可以调校到一个功能正常的启动坡度。分析成功后,应注意在电机文件中覆盖这些值。如果不够,请切换到开环程序,手动调整启动速度,找到可行的解决方案,然后将其重新用于你的分析器项目。有关开环部分的更多详情,请参见
在剖面开始前,可能会出现一些过压或过低的电压误差。确保电压阈值定义明确,并更新变化阈值以匹配所需值。这也可能由电流检测用的1 ADC配置引起。
硬件重置控制板或逆变器板,或者重新下载“Motor Profiler”固件,可能导致Motor Profiler工具不允许新的Start Profile。要恢复该功能,用户必须断开Motor Profiler 工具,通过执行图形界面/加载图形界面作加载 profiler.qml,然后重新连接发动机分析工具。此外,如前所述,如果电源或逆变器板.json文件中没有 resistorOffset 参数,“Start Profile”可能无法访问。
请生成一个将速度辅助传感器设置为霍尔传感器模式的Motor Profiler 项目。
电机在工艺开始时是负方向旋转的。
电机在工艺开始时是负方向旋转的。
Motor Profiler功能不兼容电子测速控制(ESC)。
如果在速度控制模式下使用负速度目标或扭矩控制模式下使用负Iq电流目标,电机分析不会结束。